package com.binance.mbxgateway.web.service;

import java.util.List;

import com.binance.mbxgateway.vo.request.api.ApiKeyModelRequest;
import com.binance.mbxgateway.vo.request.api.DeleteAllApiKeyRequest;
import com.binance.mbxgateway.vo.request.api.DeleteApiKeyRequest;
import com.binance.mbxgateway.vo.request.api.DisableApiByIdRequest;
import com.binance.mbxgateway.vo.request.api.EnableApiCreateRequest;
import com.binance.mbxgateway.vo.request.api.EnableApiWithdrawRequest;
import com.binance.mbxgateway.vo.request.api.GetApiListRequest;
import com.binance.mbxgateway.vo.request.api.GetApisRequest;
import com.binance.mbxgateway.vo.request.api.ReSendMailRequest;
import com.binance.mbxgateway.vo.request.api.ReSendMailVerifyRequest;
import com.binance.mbxgateway.vo.request.api.SaveApiKeyRequest;
import com.binance.mbxgateway.vo.request.api.SearchApiRequest;
import com.binance.mbxgateway.vo.request.api.SearchDeletedApiRequest;
import com.binance.mbxgateway.vo.request.api.UpdateApiKeyRequest;
import com.binance.mbxgateway.vo.response.PagingResult;
import com.binance.mbxgateway.vo.response.api.ApiModelResponse;
import com.binance.mbxgateway.vo.response.api.EnableApiWithdrawResponse;
import com.binance.mbxgateway.vo.response.api.UpdateApiKeyResponse;

public interface IApiService {

    public PagingResult<ApiModelResponse> loadApiList(SearchApiRequest body) throws Exception;

    public ApiModelResponse queryApiByUserAndApiKey(String userId, String apiKey) throws Exception;

    public PagingResult<ApiModelResponse> loadDeletedApiList(SearchDeletedApiRequest body) throws Exception;

    public void addDeletedApi(ApiKeyModelRequest body) throws Exception;

    public ApiModelResponse saveApiKey(SaveApiKeyRequest body) throws Exception;

    public void deleteApiKey(DeleteApiKeyRequest body) throws Exception;

    public void deleteAllApiKey(DeleteAllApiKeyRequest body) throws Exception;

    public UpdateApiKeyResponse updateApiKey(UpdateApiKeyRequest request) throws Exception;

    public ApiModelResponse enableApiCreate(EnableApiCreateRequest body) throws Exception;

    public void reSendMailVerify(ReSendMailVerifyRequest body) throws Exception;

    public EnableApiWithdrawResponse enableApiWithdraw(EnableApiWithdrawRequest body) throws Exception;

    public void reSendMail(ReSendMailRequest body) throws Exception;

    public List<ApiModelResponse> getApis(GetApisRequest body) throws Exception;

    public List<ApiModelResponse> getApiList(GetApiListRequest body) throws Exception;

    public void disableApiById(DisableApiByIdRequest body) throws Exception;
}
